    @XmlType(name="{{datatypeWithEnum}}")
    @XmlEnum({{datatype}}.class)
    public enum {{datatypeWithEnum}} {
        {{#allowableValues}}{{#enumVars}}{{name}}({{{value}}}){{^-last}},
        {{/-last}}{{#-last}};{{/-last}}{{/enumVars}}
{{/allowableValues}}
        private {{datatype}} value;

        {{datatypeWithEnum}} ({{datatype}} v) {
            value = v;
        }

        public String value() {
            return value;
        }

        @Override
        public String toString() {
            return String.valueOf(value);
        }

        @JsonCreator
        public static {{datatypeWithEnum}} fromValue(String v) {
            for ({{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} b : {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.values()) {
                if (String.valueOf(b.value).equals(v)) {
                    return b;
                }
            }
{{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}' enum.");{{/errorOnUnknownEnum}}
        }
    }